Reed-Solomon (RS) codes are a well-known and powerful class of error-correcting codes with various areas of application. Error correction is achieved by appending extra parity (or check) symbols to a block of information symbols (i.e., an information message), thus obtaining a codeword (i.e., an encoded message). When the codeword is transmitted through a channel, some symbols often become corrupted. However, the information from the parity symbols allows a decoder to reconstruct the original information message if the total number of errors induced by the channel is no more than a maximum error limit predetermined for the RS encoder and the RS decoder.
The maximum error limit is a construction parameter for the RS encoder and the RS decoder. Successful decoding is possible only if the number of errors added to the codeword by the channel is no more than the maximum error limit. Otherwise, the RS decoder can either decline to perform the correction or can provide incorrect results. If the maximum error limit has a value (i.e., T), the number of extra parity symbols that are appended to the information message is 2T. The appended parity symbols give a relation between a length of the information message (e.g., INFO_LEN) and a total length of the codeword (i.e., LEN) of LEN=INFO_LEN+2T.
Many conventional hardware implementations of RS encoders and RS decoders deal with fixed maximum error limit values. Therefore, the maximum error limit parameter is considered at instantiation time of the RS encoders and the RS decoders and cannot be changed at runtime. It is desirable for the maximum error limit of the RS encoders and the RS decoders to be variable at runtime.